# cli_youtube_watcher

### Описание
Скрипт написан по мотивам аналогичного скрипта от [ЧТ](https://notabug.org/Black_Triangle/TriangleTube). Скрипт позволяет просматривать видеоролики со своих подписок на youtube из командной строки используя [fzf](https://github.com/junegunn/fzf), а точнее его обертку для python [pyfzf](https://github.com/nk412/pyfzf). Скрипт парсит сайт https://yewtu.be это один из сайтов с альтернативным веб-фронтендом [Invidious](https://github.com/omarroth/invidious) для youtube. Видео воспроизводится с помощью [mpv](https://mpv.io) плеера.

### Установка

Установите [fzf](https://github.com/junegunn/fzf)

Далее выполните следующие команды:
```
# Укажите в какую директорию вы хотите установить
 your_dir=./your_dir

 mkdir $your_dir
 wget https://notabug.org/lambda/cli_youtube_watcher/raw/master/{main.py,requirements.txt} -P $your_dir
 python -m venv $your_dir
 source $your_dir/bin/activate
 cd $your_dir
 pip install -r ./requirements.txt
 touch ./subscriptions.txt
 echo 'Добавьте свои подписки в subscriptions.txt'
 python ./main.py
```

Перед запуском `python ./main.py` добавьте ваши подписки в `subscriptions.txt`

Файл подписок должен выглядеть вот так:
```
/channel/UCUKs39ZVVW2NK8B5g3AhAPA
/channel/UC0txrR-PfjZl3VxfQyd42FQ
# Можно оставлять комментарии
/channel/UC101o-vQ2iOj9vr00JUlyKw
/channel/UC2hsvTzqdjsGOUnM-Ilai6Q
/channel/UC2q4mHrzoR48mwSuAYtVPtQ
/channel/UC32velEjgFxI08yXZOD22dg
/channel/UC4axiS76D784-ofoTdo5zOA
/channel/UC6cqazSR6CnVMClY0bJI0Lg

```
### Управление

Находясь в программе работают следующие клавиатурные сочетания

`Alt-BackSpace` - Выход в предыдущее меню. Если находимся в начальном меню тогда выход из программы.

`Del` - Находясь в меню последних видео удалит видео под курсором из БД.

`Ctrl-p` - История поиска previous-history

`Ctrl-n` - История поиска next-history

Небольшая шпаргалка по поиску:
https://github.com/junegunn/fzf#search-syntax



### Алгоритм работы

При первом запуске проверяется наличие файла БД, если её нет то будет предложено создать её. Далее из файла подписок берутся ссылки на каналы. Парсер начинает сбор ссылок, имен каналов, имен видео. Парсятся абсолютно все видео которые выложены на канале. Все это складывается в БД, и программа запускается.

При повторном запуске, когда БД уже создана будет проверено наличие новых подписок в файле подписок, если таковые есть то будут добавлены в БД, далее будет предложено проверить наличие новых видео.

### Замечания

Пока алгоритм поиска **новых** видео реализован только поиском на первой странице. То есть если вы давно не обновляли подписки и количество новых видео вышло за первую страницу (это около 30 роликов), то алгоритм добавит только новые видео с первой страницы.